﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SAP.Middleware.Connector;

namespace Crosland.Automotriz.SAP
{
    public class ConexionCroslandSAP
    {

        private RfcDestination myDestination;
        private RfcRepository myRepository;

        public ConexionCroslandSAP()
        {

        }

        public RfcConfigParameters ConexionSAP()
        {
            RfcConfigParameters myParams = new RfcConfigParameters();
            myParams.Add(RfcConfigParameters.Name, "prd");
            myParams.Add(RfcConfigParameters.AppServerHost, "192.1.1.48");
            myParams.Add(RfcConfigParameters.LogonGroup, "prd");
            myParams.Add(RfcConfigParameters.SystemNumber, "0");
            myParams.Add(RfcConfigParameters.User, "ventastienda");
            myParams.Add(RfcConfigParameters.Password, "cr0sl4nd");
            myParams.Add(RfcConfigParameters.Client, "300");
            myParams.Add(RfcConfigParameters.Language, "ES");
            myParams.Add(RfcConfigParameters.PoolSize, "5");
            myParams.Add(RfcConfigParameters.MaxPoolSize, "10");
            myParams.Add(RfcConfigParameters.IdleTimeout, "5000");

            return myParams;
        }

        public List<decimal> FuncionAbap(DateTime Cod)
        {
            RfcConfigParameters myParams = ConexionSAP();

            List<decimal> tipoCambio = new List<decimal>();

            myDestination = RfcDestinationManager.GetDestination(myParams);
            myRepository = myDestination.Repository;
            RfcSessionManager.BeginContext(myDestination);

            IRfcFunction funcion = myRepository.CreateFunction("ZRFC_TIPCAMBIO");
            funcion.SetValue("P_DATUM", dateNetToSap(Cod));

            funcion.Invoke(myDestination);

            tipoCambio.Add(Convert.ToDecimal(funcion.GetString("TC_C")));
            tipoCambio.Add(Convert.ToDecimal(funcion.GetString("TC_V")));

            return tipoCambio;


        }


        public static string dateNetToSap(DateTime pFechaNET)
        {
            try
            {
                return pFechaNET.Year.ToString().PadLeft(4, '0') + pFechaNET.Month.ToString().PadLeft(2, '0') + pFechaNET.Day.ToString().PadLeft(2, '0');
            }
            catch { return string.Empty; }
        }

    }
}
